package inventory.service;

import com.baomidou.mybatisplus.service.IService;
import inventory.entity.Manager;
import inventory.entity.User;
import inventory.entity.po.UserPo;
import net.sf.json.JSONObject;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author sxt
 * @since 2019-11-06
 */


public interface UserService extends IService<User> {
    /**
     *
     * @description: 修改用户state
     * @param status
     * @return:
     * @author: jwx
     * @time: 2019/12/10 13:33
     */

    Integer changeStatusById(String userId, String managerId, String status);
    /**
     * @Description: 根据工号查询用户
     * @Param: id
     * @return: User
     * @Author: jwx
     * @Date: 2019/11/23
     */
    User queryUserByWorkId(String workId);

    @Deprecated
    public int  modifyById(User user,String workId,String managerId);
    /**
     * @Description: 根据userId删除用户
     * @Param:
     * @return:
     * @Author: jwx
     * @Date: 2019/11/24
     */
    int  deleteUserById(String userId,String managerId);
    /**
     * @Description: 添加用户，并且分配权限，分配仓库
     * @Param: User
     * @return: void
     * @Author: jwx
     * @Date: 2019/11/19
     */
    int addUser(User user,String managerId);

     /**
     * @Description: 查询所有用户
     * @Param: null
     * @return: List
     * @Author: jwx
     * @Date: 2019/11/23
     */
    List<UserPo> queryAllUser(String managerId);

    /**
     * @Description: 根据用户名查询用户
     * @Param: username
     * @return: List
     * @Author: jwx
     * @Date: 2019/11/23
     */
    List<User> queryUserByName(String username);

    //查询用户
    List<UserPo> queryUserPo(User user,String managerId);

    /**
     *
     * @description: 根据角色查找用户
     * @param roleId managerId
     * @return: List<UserPo>
     * @author: jwx
     * @time: 2019/11/25 20:30
     */

    List<UserPo> selectUsersByRole(String roleId,String managerId);

    //---------------------------TTXXI START-------------------------------
    /**
     * 用户\管理员登录
     * @param workId
     * @param password
     * @param type
     * @return
     */
    JSONObject login(String workId , String password , String type);


    /**
     *获取用户所有的信息，包括个人信息、权限、仓库
     * @param workId
     * @return
     */
    UserPo queryUserAllInfoByUserId(String workId);

    /**
     * 添加管理员
     * @param manager
     * @return
     */
    boolean addManager(Manager manager);

    /**
     * 根据用户id查询对应的管理员id
     * @param userId
     * @return
     */
    Manager queryManagerByUserId(String userId);

    /**
     * 是否是同一个管理员下的
     * @param userId1 上级的userId
     * @param userId2 下级的userId
     * @return
     */
    boolean isSameManager(String userId1,String userId2);



    //---------------------------TTXXI END-------------------------------


    //---------------------------rhq start-------------------------------
    UserPo queryUserPoByUserId(String userId);


    //---------------------------rhq end-------------------------------

}
